from list.jump import JumpServer
from list.aliyun_list import Aliyun


def get_ip_list(ali_dict, jms_dict):
    """
    获取需要新添加到跳板机里的机器列表
    :param ali_dict: 阿里云机器信息
    :param jms_dict: 跳板机机器信息
    :return: 需要新添加到跳板机里的机器列表
    """
    ali_list, jms_list = list(ali_dict.keys()), jms_dict.keys()
    return list(set(ali_list) - set(jms_list))


def get_id_list(ali_dict, jms_dict):
    """
    获取需要从跳板机删除的机器列表的函数
    :param ali_dict: 阿里云机器信息
    :param jms_dict: 跳板机机器信息
    :return: 需要从跳板机里删除的机器列表
    """
    jms_list, ali_list = list(jms_dict.keys()), list(ali_dict.keys())
    ips = list(set(jms_list) - set(ali_list))
    ips.remove('10.81.163.96')
    return [jms_dict[ip] for ip in ips]


if __name__ == "__main__":
    jump_node_dict = {
        'PF': "Default/批发",
        'SG': "Default/零售"
    }
    try:
        ali, jms = Aliyun(), JumpServer()
        # 获取阿里云与跳板机的机器信息
        ali_instances_dict, jms_assets_dict = ali.get_instances(), jms.get_assets()
        ip_list, id_list = get_ip_list(ali_instances_dict, jms_assets_dict), get_id_list(ali_instances_dict, jms_assets_dict)
        # 删除新机器
        [jms.delete_asset(id) for id in id_list] if id_list else print("没有需要删除的旧资产!!!")
        # 创建新机器
        [jms.create_new_asset(jump_node_dict[ali_instances_dict[ip][:2]], ali_instances_dict[ip]) for ip in ip_list] if ip_list else print("没有需要创建的新资产!!!")
    except Exception as e:
        print(str(e))
